cmake_minimum_required(VERSION 3.23)
project(MultiSortVis LANGUAGES CXX CUDA)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CUDA_STANDARD 17)

find_package(Qt6 REQUIRED COMPONENTS Widgets gui Concurrent)
find_package(CUDAToolkit REQUIRED)
qt_standard_project_setup()

add_executable(MultiSortVis
        main.cpp
        core/SortRenderer.cu core/SortRenderer.cuh core/SortStats.h
        thread/SortThread.h thread/SortThread.cpp
        thread/Randomizer.h thread/Randomizer.cpp
        gui/BarWidget.h gui/BarWidget.cpp
        gui/MainWindow.h gui/MainWindow.cpp
        gui/WinEventFilter.h gui/WinEventFilter.cpp
        core/SortStats.h
        core/SortRenderer.cu
        core/SortRenderer.cuh
        thread/Randomizer.cpp
        thread/Randomizer.h
        thread/SortThread.cpp
        thread/SortThread.h
        gui/MainWindow.cpp
        gui/MainWindow.h
        gui/WinEventFilter.cpp
        gui/WinEventFilter.h
        gui/BarWidget.cpp
        gui/BarWidget.h
        thread/SortThread.cpp
)

target_include_directories(MultiSortVis
        PRIVATE ${CUDAToolkit_INCLUDE_DIRS})

target_link_libraries(MultiSortVis
        PRIVATE Qt6::Widgets Qt6::Gui Qt6::Concurrent CUDA::cudart)

set_target_properties(MultiSortVis PROPERTIES WIN32_EXECUTABLE YES)
